home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / sunny.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-04-25  |  5.0 KB  |  263 lines

  1. 100  REM --PURPOSE
  2. 102  REM
  3. 104  REM   THIS PROGRAM CALCULATES THE BEGINNING OF DAWN (ASTRONOMICAL,
  4. 106  REM   NAUTICAL, AND CIVIL), SUNRISE, SUNSET, AND THE END OF DUSK
  5. 108  REM   (CIVIL, NAUTICAL, AND ASTRONOMICAL). IT IS ACCURATE TO
  6. 110  REM   WITHIN A MINUTE OR SO DURING THE SECOND HALF OF THE TWENTIETH
  7. 112  REM   CENTURY.  ITS PRECISION DEGRADES NEAR THE POLES WHEN THE SUN
  8. 114  REM   REMAINS CLOSE TO THE HORIZON FOR LONG PERIODS OF TIME.
  9. 116  REM
  10. 118  REM --INPUTS--
  11. 120  REM
  12. 122  REM   LAT.  : LATTITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS
  13. 124  REM           WHERE NORTH IS POSITIVE AND SOUTH IS NEGATIVE. FOR
  14. 126  REM           EXAMPLE, 30.0029 REPRESENTS 30 DEGREES, 00 MINUTES,
  15. 128  REM           29 SECONDS NORTH LATTITUDE.
  16. 130  REM
  17. 132  REM   LON.  : LONGITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS
  18. 134  REM           WHERE WEST IS POSITIVE AND EAST IS NEGATIVE. FOR
  19. 136  REM           EXAMPLE, 90.1108 REPRESENTS 90 DEGREES, 11 MINUTES,
  20. 138  REM           08 SECONDS WEST LONGITUDE.
  21. 140  REM
  22. 142  REM   YEAR  : ENTER A NUMBER BETWEEN 1951 AND 2000 INCLUSIVE.
  23. 144  REM
  24. 146  REM   MONTH : ENTER A NUMBER BETWEEN 1 AND 12 INCLUSIVE.
  25. 148  REM
  26. 150  REM   DAY   : ENTER A NUMBER BETWEEN 1 AND 31 INCLUSIVE.
  27. 152  REM
  28. 154  REM   ZONE  : TIME ZONE, I.E., THE TIME IN HOURS AND MINUTES THAT
  29. 156  REM           IS ADDED TO WALL CLOCK TIME TO YIELD UNIVERSAL TIME.
  30. 158  REM           IN THE FORTY-EIGHT CONTIGUOUS UNITED STATES, REFER
  31. 160  REM           TO THE TABLE BELOW.
  32. 162  REM
  33. 164  REM                         STANDARD    DAYLIGHT
  34. 166  REM
  35. 168  REM           EASTERN         5.00        4.00
  36. 170  REM           CENTRAL         6.00        5.00
  37. 172  REM           MOUNTAIN        7.00        6.00
  38. 174  REM           PACIFIC         8.00        7.00
  39. 176  REM
  40. 178  REM --OUTPUTS--
  41. 180  REM
  42. 182  REM   OUTPUTS ARE EXPRESSED IN HOURS AND MINUTES ON A TWENTY-FOUR
  43. 184  REM   HOUR BASIS. FOR EXAMPLE, 6.25 REPRESENTS 6:25 A.M. AND 18.25
  44. 186  REM   REPRESENTS 6:25 P.M.
  45. 188  REM
  46. 190  REM   THE OUTPUT 0.00 IS A SPECIAL CASE.  IT INDICATES THAT THE
  47. 192  REM   PHENOMENON DOES NOT OCCUR ON THE SPECIFIC DATE.  FOR EXAMPLE,
  48. 194  REM   THE SUN DOES NOT SET IN MIDSUMMER AT HIGH LATITUDES.
  49. 196  REM
  50. 198  REM
  51. 200  REM - CONSTANTS
  52. 202  REM
  53. 204    A=1.5708
  54. 206    B=3.14159
  55. 208    C=4.71239
  56. 210    D=6.28319
  57. 212  REM
  58. 214  REM - INPUTS
  59. 216  REM
  60. 218    INPUT "LAT.  ";Z
  61. 220    GOSUB 378
  62. 222    E=Z*0.0174533
  63. 224  REM
  64. 226    INPUT "LON.  ";Z
  65. 228    GOSUB 378
  66. 230    F=Z*0.0174533
  67. 232  REM
  68. 234    INPUT "YEAR  ";H
  69. 236    INPUT "MONTH ";I
  70. 238    INPUT "DAY   ";J
  71. 240  REM
  72. 242    INPUT "ZONE  ";Z
  73. 244    GOSUB 378
  74. 246    G=Z*0.261799
  75. 248  REM
  76. 250  REM - DAY OF YEAR
  77. 252  REM
  78. 254    K=INT((I+9)/12)
  79. 256    X=H/4
  80. 258    Y=INT(X)
  81. 260    Z=X-Y
  82. 262    IF Z=0 THEN 266
  83. 264    K=K*2
  84. 266    H=INT(275*I/9)
  85. 268    H=H+J-K-30
  86. 270  REM
  87. 272  REM - RISING PHENOMENA
  88. 274  REM
  89. 276    PRINT " "
  90. 278  REM
  91. 280    I=0
  92. 282    J=A
  93. 284    GOSUB 404
  94. 286  REM
  95. 288    R=-0.309017
  96. 290    GOSUB 510
  97. 292    PRINT "A DAWN ";V
  98. 294  REM
  99. 296    R=-0.207912
  100. 298    GOSUB 510
  101. 300    PRINT "N DAWN ";V
  102. 302  REM
  103. 304    R=-0.104528
  104. 306    GOSUB 510
  105. 308    PRINT "C DAWN ";V
  106. 310  REM
  107. 312    R=-0.0145439
  108. 314    GOSUB 510
  109. 316    PRINT "SUNRIS ";V
  110. 318  REM
  111. 320  REM - SETTING PHENOMRNA
  112. 322  REM
  113. 324    I=1
  114. 326    J=C
  115. 328    GOSUB 404
  116. 330  REM
  117. 332    R=-0.0145439
  118. 334    GOSUB 510
  119. 336    PRINT "SUNSET ";V
  120. 338  REM
  121. 340    R=-0.104528
  122. 342    GOSUB 510
  123. 344    PRINT "C DUSK ";V
  124. 346  REM
  125. 348    R=-0.207912
  126. 350    GOSUB 510
  127. 352    PRINT "N DUSK ";V
  128. 354  REM
  129. 356    R=-0.309017
  130. 358    GOSUB 510
  131. 360    PRINT "A DUSK ";V
  132. 362  REM
  133. 364    PRINT " "
  134. 366    PRINT "------------"
  135. 368    PRINT " "
  136. 370    GOTO 234
  137. 372  REM
  138. 374  REM - SEXAGESIMAL TO DECIMAL
  139. 376  REM
  140. 378    W=1
  141. 380    IF Z>=0 THEN 386
  142. 382    W=-1
  143. 384    Z=ABS(Z)
  144. 386    X=INT(Z)
  145. 388    Z=(Z-X)*100
  146. 390    Y=INT(Z)
  147. 392    Z=(Z-Y)*100
  148. 394    Z=(X+Y/60+Z/3600)*W
  149. 396    RETURN
  150. 398  REM
  151. 400  REM - APPROXIMATE TIME
  152. 402  REM
  153. 404    K=H+((J+F)/D)
  154. 406  REM
  155. 408  REM - SOLAR MEAN ANOMALY
  156. 410  REM
  157. 412    L=K*0.017202
  158. 414    L=L-0.0574039
  159. 416  REM
  160. 418  REM - SOLAR TRUE LONGITUDE
  161. 420  REM
  162. 422    Z=SIN(L)
  163. 424    M=L+0.0334405*Z
  164. 426    Z=SIN(2*L)
  165. 428    M=M+0.000349065*Z
  166. 430    M=M+4.93289
  167. 432    REM
  168. 434    REM - QUADRANT DETERMINATION
  169. 436    REM
  170. 438      Z=M
  171. 440      GOSUB 608
  172. 442      M=Z
  173. 444      X=M/A
  174. 446      Y=INT(X)
  175. 448      Z=X-Y
  176. 450      IF Z<>0 THEN 454
  177. 452      M=M+4.847E-06
  178. 454      N=2
  179. 456      IF M>C THEN 470
  180. 458      N=1
  181. 460      IF M>A THEN 470
  182. 462      N=0
  183. 464    REM
  184. 466    REM - SOLAR RIGHT ASCENSION
  185. 468    REM
  186. 470      P=0.91746*TAN(M)
  187. 472      P=ATN(P)
  188. 474    REM
  189. 476    REM - QUADRANT ADJUSTMENT
  190. 478    REM
  191. 480      IF N=0 THEN 496
  192. 482      IF N=2 THEN 488
  193. 484      P=P+B
  194. 486      GOTO 496
  195. 488      P=P+D
  196. 490    REM
  197. 492    REM - SOLAR DECLINATION
  198. 494    REM
  199. 496      Q=0.39782*SIN(M)
  200. 498      Q=Q/SQR(-Q*Q+1)
  201. 500      Q=ATN(Q)
  202. 502      RETURN
  203. 504   REM
  204. 506   REM - COORDINATE CONVERSION
  205. 508   REM
  206. 510     S=R-(SIN(Q)*SIN(E))
  207. 512     S=S/(COS(Q)*COS(E))
  208. 514   REM
  209. 516   REM - NULL PHENOMENON
  210. 518   REM
  211. 520     Z=ABS(S)
  212. 522     IF Z<=1 THEN 534
  213. 524     V=0
  214. 526     RETURN
  215. 528   REM
  216. 530   REM - ADJUSTMENT
  217. 532   REM
  218. 534     S=S/SQR(-S*S+1)
  219. 536     S=-ATN(S)+A
  220. 538     IF I=1 THEN 548
  221. 540     S=D-S
  222. 542   REM
  223. 544   REM - LOVAL APPARENT TIME
  224. 546   REM
  225. 548     Z=0.0172028*K
  226. 550     T=S+P-Z-1.73364
  227. 552   REM
  228. 554   REM - UNIVERSAL TIME
  229. 556   REM
  230. 558     U=T+F
  231. 560   REM
  232. 562   REM - WALL CLOCK TIME
  233. 564   REM
  234. 566     V=U-G
  235. 568   REM
  236. 570   REM - DECIMAL TO SEXAGESIMAL
  237. 572   REM
  238. 574     Z=V
  239. 576     GOSUB 608
  240. 578     Z=Z*3.81972
  241. 580     V=INT(Z)
  242. 582     W=(Z-V)*60
  243. 584     X=INT(W)
  244. 586     Y=W-X
  245. 588     IF Y<0.5 THEN 592
  246. 590     X=X+1
  247. 592     IF X<60 THEN 598
  248. 594     V=V+1
  249. 596     X=0
  250. 598     V=V+X/100
  251. 600     RETURN
  252. 602   REM
  253. 604   REM - NORMALIZATION
  254. 606   REM
  255. 608     IF Z>=0 THEN 614
  256. 610     Z=Z+D
  257. 612   GOTO 608
  258. 614   IF Z<D THEN 620
  259. 616   Z=Z-D
  260. 618   GOTO 614
  261. 620   RETURN
  262. 622   END
  263.